
/**
* 如果想让 HAL 库兼容SysTick 中断周期大于 1ms 的情况，可以用这个覆盖HAL 默认的Tick 实现
* 不兼容 RTOS 环境
*
* HAL 库的时间函数在 RTOS 启动前就要调用，所以建议将 HAL 库的时间和 RTOS 独立的分开，
* SysTick 中断时独立更新 HAL 的计数器；
* RTOS 启动前，可将 SysTick 中断周期配置为 HAL 默认的 1ms；
* 启动 RTOS 之前，调用 HAL_SetTickFreq 将 SysTick 周期修改为 RTOS 配置的值，
* 如果修改为 10ms ，则调用HAL_GetTick 时，每过 10ms ，返回值才会更新，自增 10。
*/


#include "systick_counter.hpp"

extern "C" {

// 覆盖默认的HAL Systick 初始化函数
// 中断优先级固定为最低
HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) {
    scheduler_basic::setup_systick();
}


void HAL_Delay(uint32_t Delay) {
    uint32_t now = scheduler_basic::clock_ms();

    while ((scheduler_basic::clock_ms() - now) < Delay);
}


uint32_t HAL_GetTick(void) {
    return scheduler_basic::clock_ms();
}
}
